home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac Power 1997 December
/
MACPOWER-1997-12.ISO.7z
/
MACPOWER-1997-12.ISO
/
AMUG
/
PROGRAMMING
/
Raven 1.2.sit
/
Raven 1.2
/
Documents
/
Raven Description
< prev
next >
Wrap
Text File
|
1997-09-08
|
3KB
|
55 lines
This file contains the source for Raven 1.2 a new C++ framework for
Macintosh programming. Raven is similar to PowerPlant and MacApp but
takes full advantage of newer C++ features, has a more modular
structure, and makes extensive use of programming by contract.
There are too many changes to list here, but they boil down to numerous
bug fixes and enhancements, support for the Appearance and Context Menu
Managers, support for opaque panes, StandardAlert is used wherever possible,
some cool deterministic and non-deterministic finite automata classes,
recursive descent parser classes built on top of the automata classes,
and TArray, TSparseArray, TVector, and TSafePtr classes.
Like ODF and MacApp Raven makes extensive use of multiple inheritance
by means of mixin classes. Raven also uses the standard C++ classes
wherever possible, including the string class, the standard exception
classes, and STL. Raven also makes use of template classes and RTTI.
Raven is divided into four layers: Foundation, Core, Application,
and Esoterica. Each layer is composed of a number of packages. For
example the Core layer has a Files package containing classes to
manage things like reading/writing a file, iterating over files,
accessing the Desktop Manager, and CustomGetFile and CustomPutFile.
The Foundation layer contains low level classes for things like
memory management, debugging, broadcast/listener, exceptions, string
utilities, and geometry classes.
The Core layer includes a large number of generally useful classes for
things like graphics, sound, files, menus, command objects, drag and
drop, preferences, etc.
The Application layer contains higher level classes for views, windows,
and application objects.
The Esoterica layer contains more exotic classes that most applications
won't need. It includes classes for compression (using zlib), finite
automata, regular expressions, parsing, QuickDraw 3D, 2D graphing, 3D
graphing, and mathematics.
Because the lower layers are independant of the higher layers and
coupling between packages is minimized you can easily use parts of
Raven with other frameworks. For example, most of the Foundation
and Core layers can be used with PowerPlant.
Raven includes a rich set of debugging tools that include several
excellent debug macros, a powerful debug menu, a framework for
developing unit tests, and a flexible replacement for the default
operator new that keeps a stack crawl for each allocated block.
In addition the member functions in Raven classes do a good job of
verifying the validity of their arguments and many of the classes
include Invariant methods to catch bugs within Raven or within ill
behaved subclasses.
-- Jesse (jesjones@halcyon.com)